<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Archive Recovery Settings</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Recovery Configuration"
HREF="recovery-config.html"><LINK
REL="PREVIOUS"
TITLE="Recovery Configuration"
HREF="recovery-config.html"><LINK
REL="NEXT"
TITLE="Recovery Target Settings"
HREF="recovery-target-settings.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Recovery Configuration"
HREF="recovery-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="recovery-config.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 26. Recovery Configuration</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Recovery Target Settings"
HREF="recovery-target-settings.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="ARCHIVE-RECOVERY-SETTINGS"
>26.1. Archive Recovery Settings</A
></H1
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><A
NAME="RESTORE-COMMAND"
></A
><TT
CLASS="VARNAME"
>restore_command</TT
> (<TT
CLASS="TYPE"
>string</TT
>)</DT
><DD
><P
>        The shell command to execute to retrieve an archived segment of
        the WAL file series. This parameter is required for archive recovery,
        but optional for streaming replication.
        Any <TT
CLASS="LITERAL"
>%f</TT
> in the string is
        replaced by the name of the file to retrieve from the archive,
        and any <TT
CLASS="LITERAL"
>%p</TT
> is replaced by the copy destination path name
        on the server.
        (The path name is relative to the current working directory,
        i.e., the cluster's data directory.)
        Any <TT
CLASS="LITERAL"
>%r</TT
> is replaced by the name of the file containing the
        last valid restart point. That is the earliest file that must be kept
        to allow a restore to be restartable, so this information can be used
        to truncate the archive to just the minimum required to support
        restarting from the current restore. <TT
CLASS="LITERAL"
>%r</TT
> is typically only
        used by warm-standby configurations
        (see <A
HREF="warm-standby.html"
>Section 25.2</A
>).
        Write <TT
CLASS="LITERAL"
>%%</TT
> to embed an actual <TT
CLASS="LITERAL"
>%</TT
> character.
       </P
><P
>        It is important for the command to return a zero exit status
        only if it succeeds.  The command <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>will</I
></SPAN
> be asked for file
        names that are not present in the archive; it must return nonzero
        when so asked.  Examples:
</P><PRE
CLASS="PROGRAMLISTING"
>restore_command = 'cp /mnt/server/archivedir/%f "%p"'
restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows</PRE
><P>
       </P
></DD
><DT
><A
NAME="ARCHIVE-CLEANUP-COMMAND"
></A
><TT
CLASS="VARNAME"
>archive_cleanup_command</TT
> (<TT
CLASS="TYPE"
>string</TT
>)</DT
><DD
><P
>        This optional parameter specifies a shell command that will be executed
        at every restartpoint.  The purpose of
        <TT
CLASS="VARNAME"
>archive_cleanup_command</TT
> is to provide a mechanism for
        cleaning up old archived WAL files that are no longer needed by the
        standby server.
        Any <TT
CLASS="LITERAL"
>%r</TT
> is replaced by the name of the file containing the
        last valid restart point.
        That is the earliest file that must be <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>kept</I
></SPAN
> to allow a
        restore to be restartable, and so all files earlier than <TT
CLASS="LITERAL"
>%r</TT
>
        may be safely removed.
        This information can be used to truncate the archive to just the
        minimum required to support restart from the current restore.
        The <A
HREF="pgarchivecleanup.html"
>pg_archivecleanup</A
> module
        is often used in <TT
CLASS="VARNAME"
>archive_cleanup_command</TT
> for
        single-standby configurations, for example:
</P><PRE
CLASS="PROGRAMLISTING"
>archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'</PRE
><P>
        Note however that if multiple standby servers are restoring from the
        same archive directory, you will need to ensure that you do not delete
        WAL files until they are no longer needed by any of the servers.
        <TT
CLASS="VARNAME"
>archive_cleanup_command</TT
> would typically be used in a
        warm-standby configuration (see <A
HREF="warm-standby.html"
>Section 25.2</A
>).
        Write <TT
CLASS="LITERAL"
>%%</TT
> to embed an actual <TT
CLASS="LITERAL"
>%</TT
> character in the
        command.
       </P
><P
>        If the command returns a non-zero exit status then a WARNING log
        message will be written.
       </P
></DD
><DT
><A
NAME="RECOVERY-END-COMMAND"
></A
><TT
CLASS="VARNAME"
>recovery_end_command</TT
> (<TT
CLASS="TYPE"
>string</TT
>)</DT
><DD
><P
>        This parameter specifies a shell command that will be executed once only
        at the end of recovery. This parameter is optional. The purpose of the
        <TT
CLASS="VARNAME"
>recovery_end_command</TT
> is to provide a mechanism for cleanup
        following replication or recovery.
        Any <TT
CLASS="LITERAL"
>%r</TT
> is replaced by the name of the file containing the
        last valid restart point, like in <A
HREF="archive-recovery-settings.html#ARCHIVE-CLEANUP-COMMAND"
>archive_cleanup_command</A
>.
       </P
><P
>        If the command returns a non-zero exit status then a WARNING log
        message will be written and the database will proceed to start up
        anyway.  An exception is that if the command was terminated by a
        signal, the database will not proceed with startup.
       </P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="recovery-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="recovery-target-settings.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Recovery Configuration</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="recovery-config.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Recovery Target Settings</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>